package com.yida.gwj.expend.outside.domain.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Optional;

/**
 * 房子gwj插入请求
 *
 * @author wkz
 * @date 2023/02/24
 */
@ApiModel(description = "插入房屋信息Request")
public class GwjInsertHouseRequest {
    private static final long serialVersionUID = 1L;

    /**
     * 业务ID
     */
    @ApiModelProperty(value = "业务ID")
    private Long bizId;

    /**
     * 房屋ID
     */
    @ApiModelProperty(value = "房屋编号")
    private Long houseId;

    /**
     * 银行ID
     */
    @ApiModelProperty(value = "银行ID")
    private Long bankId;

    /**
     * 坐落
     */
    @ApiModelProperty(value = "房屋坐落")
    private String houseLocation;

    /**
     * 楼层序号
     */
    @ApiModelProperty(value = "楼层序号")
    private Integer floorNum;

    /**
     * 分户序号
     */
    @ApiModelProperty(value = "分户序号")
    private Integer householdNum;

    /**
     * 房牌号
     */
    @ApiModelProperty(value = "房牌号")
    private String roomNum;

    /**
     * 户型
     */
    @ApiModelProperty(value = "户型")
    private String doorModel;

    /**
     * 房屋用途
     */
    @ApiModelProperty(value = "房屋用途")
    private String useType;

    /**
     * 预测面积（yuce_size）
     */
    @ApiModelProperty(value = "预测面积")
    private BigDecimal forecastSize;

    /**
     * 实测面积（shice_size）
     */
    @ApiModelProperty(value = "实测面积")
    private BigDecimal actualSize;

    /**
     * 房屋标识码
     */
    @ApiModelProperty(value = "房屋标识码")
    private String houseCode;

    /**
     * 楼栋自然幢号
     */
    @ApiModelProperty(value = "楼栋自然幢号")
    private String buildCode;

    /**
     * 名义层
     */
    @ApiModelProperty(value = "名义层")
    private String nominalLayer;

    /**
     * 结构
     */
    @ApiModelProperty(value = "结构")
    private String buildFramework;

    /**
     * 实缴金额
     */
    @ApiModelProperty(value = "实缴金额")
    private BigDecimal depositMoney;

    /**
     * 已使用金额
     */
    @ApiModelProperty(value = "已使用金额")
    private BigDecimal usedMoney;

    /**
     * 增值金额
     */
    @ApiModelProperty(value = "增值金额")
    private BigDecimal addedMoney;

    /**
     * 冻结金额
     */
    @ApiModelProperty(value = "冻结金额")
    private BigDecimal blockedMoney;

    /**
     * 利息金额
     */
    @ApiModelProperty(value = "利息金额")
    private BigDecimal interestMoney;

    /**
     * 当前余额
     */
    @ApiModelProperty(value = "当前余额")
    private BigDecimal currentMoney;

    /**
     * 房屋价格
     */
    @ApiModelProperty(value = "房屋价格")
    private BigDecimal housingPrice;

    /**
     * 缴款面积
     */
    @ApiModelProperty(value = "缴款面积")
    private BigDecimal depositSize;

    /**
     * 是否为公用户 默认0 不是，1是
     */
    @ApiModelProperty(value = "是否为公用户 默认0 不是，1是")
    private String publicFlag;

    /**
     * 产权证书编号
     */
    @ApiModelProperty(value = "产权证书编号")
    private String certificateNum;

    /**
     * 公用户创建日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "公用户创建日期")
    private Date publicCreateTime;

    /**
     * 地区ID
     */
    @ApiModelProperty(value = "地区ID")
    private Long areaId;

    /**
     * 街道ID
     */
    @ApiModelProperty(value = "街道ID")
    private Long streetId;

    /**
     * 是否限制登记
     */
    @ApiModelProperty(value = "是否限制登记")
    private String restrictRegisterFlag;
    /**
     * 是否抵押登记
     */
    @ApiModelProperty(value = "是否抵押登记")
    private String mortRegisterFlag;
    /**
     * 是否产权登记
     */
    @ApiModelProperty(value = "是否产权登记")
    private String transferRegisterFlag;
    /**
     * 是否总登记
     */
    @ApiModelProperty(value = "是否总登记")
    private String initialRegisterFlag;
    /**
     * 是否已预购商品房抵押权预告登记
     */
    @ApiModelProperty(value = "是否已预购商品房抵押权预告登记")
    private String housePredictMortRegisterFlag;
    /**
     * 是否已预购商品房预告登记
     */
    @ApiModelProperty(value = "是否已预购商品房预告登记")
    private String housePredictRegisterFlag;
    /**
     * 是否已合同登记备案
     */
    @ApiModelProperty(value = "是否已合同登记备案")
    private String houseContractRegisterFlag;
    /**
     * 是否已签约
     */
    @ApiModelProperty(value = "是否已签约")
    private String contractSignFlag;
    /**
     * 是否已认购
     */
    @ApiModelProperty(value = "是否已认购")
    private String subscribeFlag;
    /**
     * 是否预售许可
     */
    @ApiModelProperty(value = "是否预售许可")
    private String salePermitFlag;

    /**
     * 房屋可用额度
     */
    @ApiModelProperty(value = "房屋可用额度")
    private BigDecimal availableMoney;
    public Long getBizId() {
        return bizId;
    }

    public void setBizId(Long bizId) {
        this.bizId = bizId;
    }

    public String getHouseLocation() {
        return houseLocation;
    }

    public void setHouseLocation(String houseLocation) {
        this.houseLocation = houseLocation;
    }

    public String getDoorModel() {
        return doorModel;
    }

    public void setDoorModel(String doorModel) {
        this.doorModel = doorModel;
    }

    public Long getHouseId() {
        return houseId;
    }

    public void setHouseId(Long houseId) {
        this.houseId = houseId;
    }

    public void setBankId(Long bankId) {
        this.bankId = bankId;
    }

    public Long getBankId() {
        return bankId;
    }

    public void setFloorNum(Integer floorNum) {
        this.floorNum = floorNum;
    }

    public Integer getFloorNum() {
        return floorNum;
    }

    public void setHouseholdNum(Integer householdNum) {
        this.householdNum = householdNum;
    }

    public Integer getHouseholdNum() {
        return householdNum;
    }

    public void setRoomNum(String roomNum) {
        this.roomNum = roomNum;
    }

    public String getRoomNum() {
        return roomNum;
    }

    public void setUseType(String useType) {
        this.useType = useType;
    }

    public String getUseType() {
        return useType;
    }

    public void setForecastSize(BigDecimal forecastSize) {
        this.forecastSize = Optional.ofNullable(forecastSize).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getForecastSize() {
        return forecastSize;
    }

    public void setActualSize(BigDecimal actualSize) {
        this.actualSize = Optional.ofNullable(actualSize).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getActualSize() {
        return actualSize;
    }

    public void setNominalLayer(String nominalLayer) {
        this.nominalLayer = nominalLayer;
    }

    public String getNominalLayer() {
        return nominalLayer;
    }

    public void setBuildFramework(String buildFramework) {
        this.buildFramework = buildFramework;
    }

    public String getBuildFramework() {
        return buildFramework;
    }

    public BigDecimal getDepositMoney() {
        return depositMoney;
    }

    public void setDepositMoney(BigDecimal depositMoney) {
        this.depositMoney = Optional.ofNullable(depositMoney).orElse(BigDecimal.ZERO);
    }

    public void setUsedMoney(BigDecimal usedMoney) {
        this.usedMoney = Optional.ofNullable(usedMoney).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getUsedMoney() {
        return usedMoney;
    }

    public void setAddedMoney(BigDecimal addedMoney) {
        this.addedMoney = Optional.ofNullable(addedMoney).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getAddedMoney() {
        return addedMoney;
    }

    public void setBlockedMoney(BigDecimal blockedMoney) {
        this.blockedMoney = Optional.ofNullable(currentMoney).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getBlockedMoney() {
        return blockedMoney;
    }

    public void setInterestMoney(BigDecimal interestMoney) {
        this.interestMoney = Optional.ofNullable(interestMoney).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getInterestMoney() {
        return interestMoney;
    }

    public void setCurrentMoney(BigDecimal currentMoney) {
        this.currentMoney = Optional.ofNullable(currentMoney).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getCurrentMoney() {
        return currentMoney;
    }

    public void setHousingPrice(BigDecimal housingPrice) {
        this.housingPrice = Optional.ofNullable(housingPrice).orElse(BigDecimal.ZERO);
    }

    public BigDecimal getHousingPrice() {
        return housingPrice;
    }

    public BigDecimal getDepositSize() {
        return depositSize;
    }

    public void setDepositSize(BigDecimal depositSize) {
        this.depositSize = depositSize;
    }

    public String getPublicFlag() {
        return publicFlag;
    }

    public void setPublicFlag(String publicFlag) {
        this.publicFlag = publicFlag;
    }

    public String getRestrictRegisterFlag() {
        return restrictRegisterFlag;
    }

    public void setRestrictRegisterFlag(String restrictRegisterFlag) {
        this.restrictRegisterFlag = restrictRegisterFlag;
    }

    public String getMortRegisterFlag() {
        return mortRegisterFlag;
    }

    public void setMortRegisterFlag(String mortRegisterFlag) {
        this.mortRegisterFlag = mortRegisterFlag;
    }

    public String getTransferRegisterFlag() {
        return transferRegisterFlag;
    }

    public void setTransferRegisterFlag(String transferRegisterFlag) {
        this.transferRegisterFlag = transferRegisterFlag;
    }

    public String getInitialRegisterFlag() {
        return initialRegisterFlag;
    }

    public void setInitialRegisterFlag(String initialRegisterFlag) {
        this.initialRegisterFlag = initialRegisterFlag;
    }

    public String getHousePredictMortRegisterFlag() {
        return housePredictMortRegisterFlag;
    }

    public void setHousePredictMortRegisterFlag(String housePredictMortRegisterFlag) {
        this.housePredictMortRegisterFlag = housePredictMortRegisterFlag;
    }

    public String getHousePredictRegisterFlag() {
        return housePredictRegisterFlag;
    }

    public void setHousePredictRegisterFlag(String housePredictRegisterFlag) {
        this.housePredictRegisterFlag = housePredictRegisterFlag;
    }

    public String getHouseContractRegisterFlag() {
        return houseContractRegisterFlag;
    }

    public void setHouseContractRegisterFlag(String houseContractRegisterFlag) {
        this.houseContractRegisterFlag = houseContractRegisterFlag;
    }

    public String getContractSignFlag() {
        return contractSignFlag;
    }

    public void setContractSignFlag(String contractSignFlag) {
        this.contractSignFlag = contractSignFlag;
    }

    public String getSubscribeFlag() {
        return subscribeFlag;
    }

    public void setSubscribeFlag(String subscribeFlag) {
        this.subscribeFlag = subscribeFlag;
    }

    public String getSalePermitFlag() {
        return salePermitFlag;
    }

    public void setSalePermitFlag(String salePermitFlag) {
        this.salePermitFlag = salePermitFlag;
    }

    public void setCertificateNum(String certificateNum) {
        this.certificateNum = certificateNum;
    }

    public String getCertificateNum() {
        return certificateNum;
    }

    public Date getPublicCreateTime() {
        return publicCreateTime;
    }

    public void setPublicCreateTime(Date publicCreateTime) {
        this.publicCreateTime = publicCreateTime;
    }

    public Long getAreaId() {
        return areaId;
    }

    public void setAreaId(Long areaId) {
        this.areaId = areaId;
    }

    public Long getStreetId() {
        return streetId;
    }

    public void setStreetId(Long streetId) {
        this.streetId = streetId;
    }

    public String getHouseCode() {
        return houseCode;
    }

    public void setHouseCode(String houseCode) {
        this.houseCode = houseCode;
    }

    public String getBuildCode() {
        return buildCode;
    }

    public void setBuildCode(String buildCode) {
        this.buildCode = buildCode;
    }

    public BigDecimal getAvailableMoney() {
        return availableMoney;
    }

    public void setAvailableMoney(BigDecimal availableMoney) {
        this.availableMoney = availableMoney;
    }

    @Override
    public String toString() {
        return "GwjInsertHouseRequest{" +
                "bizId=" + bizId +
                ", houseId=" + houseId +
                ", bankId=" + bankId +
                ", houseLocation='" + houseLocation + '\'' +
                ", floorNum=" + floorNum +
                ", householdNum=" + householdNum +
                ", roomNum='" + roomNum + '\'' +
                ", doorModel='" + doorModel + '\'' +
                ", useType='" + useType + '\'' +
                ", forecastSize=" + forecastSize +
                ", actualSize=" + actualSize +
                ", houseCode='" + houseCode + '\'' +
                ", buildCode='" + buildCode + '\'' +
                ", nominalLayer='" + nominalLayer + '\'' +
                ", buildFramework='" + buildFramework + '\'' +
                ", depositMoney=" + depositMoney +
                ", usedMoney=" + usedMoney +
                ", addedMoney=" + addedMoney +
                ", blockedMoney=" + blockedMoney +
                ", interestMoney=" + interestMoney +
                ", currentMoney=" + currentMoney +
                ", housingPrice=" + housingPrice +
                ", depositSize=" + depositSize +
                ", publicFlag='" + publicFlag + '\'' +
                ", certificateNum='" + certificateNum + '\'' +
                ", publicCreateTime=" + publicCreateTime +
                ", areaId=" + areaId +
                ", streetId=" + streetId +
                ", restrictRegisterFlag='" + restrictRegisterFlag + '\'' +
                ", mortRegisterFlag='" + mortRegisterFlag + '\'' +
                ", transferRegisterFlag='" + transferRegisterFlag + '\'' +
                ", initialRegisterFlag='" + initialRegisterFlag + '\'' +
                ", housePredictMortRegisterFlag='" + housePredictMortRegisterFlag + '\'' +
                ", housePredictRegisterFlag='" + housePredictRegisterFlag + '\'' +
                ", houseContractRegisterFlag='" + houseContractRegisterFlag + '\'' +
                ", contractSignFlag='" + contractSignFlag + '\'' +
                ", subscribeFlag='" + subscribeFlag + '\'' +
                ", salePermitFlag='" + salePermitFlag + '\'' +
                ", availableMoney=" + availableMoney +
                '}';
    }
}
